package com.jyw.router.hospital.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.jyw.router.common.core.domain.CommonResult;
import com.jyw.router.hospital.domain.HospitalInfo;
import com.jyw.router.hospital.domain.WxUser;
import com.jyw.router.hospital.domain.dto.HospitalDicDto;
import com.jyw.router.hospital.domain.vo.LoginMiniappVo;
import com.jyw.router.hospital.domain.vo.RegisterHospitalVo;

/**
 * 医院服务信息Service接口
 * 
 * @author shenjun
 * @date 2023-04-10
 */
public interface IHospitalInfoService extends IService<HospitalInfo>
{
    /**
     * 查询医院服务信息
     * 
     * @param id 医院服务信息主键
     * @return 医院服务信息
     */
    public HospitalInfo selectHospitalInfoById(Long id);

    /**
     * 查询医院服务信息列表
     * 
     * @param hospitalInfo 医院服务信息
     * @return 医院服务信息集合
     */
    public List<HospitalInfo> selectHospitalInfoList(HospitalInfo hospitalInfo);

    /**
     * 新增医院服务信息
     * 
     * @param hospitalInfo 医院服务信息
     * @return 结果
     */
    public int insertHospitalInfo(HospitalInfo hospitalInfo);

    /**
     * 修改医院服务信息
     * 
     * @param hospitalInfo 医院服务信息
     * @return 结果
     */
    public int updateHospitalInfo(HospitalInfo hospitalInfo);

    /**
     * 批量删除医院服务信息
     * 
     * @param ids 需要删除的医院服务信息主键集合
     * @return 结果
     */
    public int deleteHospitalInfoByIds(Long[] ids);

    /**
     * 删除医院服务信息信息
     * 
     * @param id 医院服务信息主键
     * @return 结果
     */
    public int deleteHospitalInfoById(Long id);

    /**
     * 注册医院
     * @param vo
     */
    HospitalInfo registerHospital(RegisterHospitalVo vo);

    /**
     * 查询启用的医院字典数据
     * @return
     */
    List<HospitalDicDto> dictList();

    /**
     * 根据医院密钥获取医院信息
     * @param info
     * @return
     */
    HospitalInfo getHospitalByKey(HospitalInfo info);

    /**
     * 微信登录
     *
     * @param wxUser
     * @param hospitalId
     * @param loginVo
     */
    CommonResult login(WxUser wxUser, String hospitalId, LoginMiniappVo loginVo);

    /**
     * 从缓存中获取医院服务信息
     * @param id
     * @return
     */
    HospitalInfo getCache(Long id);
}
